Proxy connection method and apparatus

ABSTRACT

Apparatus has at least one processor and at least one memory having computer-readable code stored therein which when executed controls the at least one processor: to respond to receiving a proxy connection initiation request message from a source, the proxy connection initiation request message being a request to provide a proxy and including an address of a target and an address of the source, by causing sending of an advertising message addressed to the target; and to respond subsequently to receiving a connection request message from the target by causing sending of a proxy setup request message addressed to the source.

RELATED APPLICATION

This application was originally filed as PCT Application No.PCT/CN2012/084209 filed Nov. 7, 2012.

FIELD

The present application relates to proxy connections. In particular,although not exclusively, it relates to the field of Bluetoothcommunications and more specifically to Bluetooth Low Energy.

BACKGROUND

Bluetooth Low Energy (BLE) is a new wireless communication technologypublished by the Bluetooth SIG as a component of Bluetooth CoreSpecification Version 4.0 BLE is a lower power, lower complexity, andlower cost wireless communication protocol, designed for applicationsrequiring lower data rates and shorter duty cycles. Inheriting theprotocol stack and star topology of classical Bluetooth, BLE redefinesthe physical layer specification, and involves many new features such asa very-low power idle mode, a simple device discovery, and short datapackets, etc.

BLE technology is aimed at devices requiring a low power consumption,for example devices that may operate with one or more button cellbatteries such as sensors, key fobs, and/or the like. BLE can also beincorporated into devices such as mobile phones, smart phones, tabletcomputers, laptop computers, desktop computers etc.

SUMMARY

Various aspects of examples of the invention are set out in the claims.

A first aspect of the present invention provides apparatus configured:

-   -   to respond to receiving a proxy connection initiation request        message from a source, the proxy connection initiation request        message being a request to provide a proxy and including an        address of a target and an address of the source, by causing        sending of an advertising message addressed to the target; and    -   to respond subsequently to receiving a connection request        message from the target by causing sending of a proxy setup        request message addressed to the source.

The apparatus may be configured to respond to receiving the connectionrequest message from the target by connecting to the target.

The apparatus may be configured to connect to the source followingcausing sending of the proxy setup request message addressed to thesource.

The apparatus may be configured to cause addition of an address relatingto the source and an address relating to the target to a record in adatabase. This apparatus may be configured to respond to detectingceasing of the connection with the source and/or the target by causingupdating of the record in the database. Alternatively or additionallythe apparatus may be configured to respond to receiving a first datapacket after connection to the source by extracting an address relatingto a sender of the first data packet, using the address relating to thesender to identify the record in the database, extracting an addressrelating to a recipient from the identified record in the database, andgenerating a second data packet including a payload included in thefirst data packet and addressed to the recipient with the addressrelating to the recipient extracted from the record in the database.

The apparatus may be configured to respond to detecting ceasing of theconnection with the source by causing disconnection of the connectionwith the target.

The apparatus may be configured to respond to detecting ceasing of theconnection with the target by causing disconnection of the connectionwith the source.

The apparatus may be configured to scan for proxy connection initiationrequest messages. The apparatus may be configured to scan for proxyconnection initiation request messages when a proxy mode setting isenabled and to refrain from scanning for proxy connection initiationrequest messages when a proxy mode setting is disabled.

The apparatus may be configured:

-   -   to respond to receiving the proxy connection initiation request        message by determining whether the address of the source        included in the proxy connection initiation request message is        included in a list of permitted addresses;    -   to cause sending of the advertising message addressed to the        target if the address of the source included in the proxy        connection initiation request message is included in the list of        permitted addresses; and    -   to refrain from sending the advertising message addressed to the        target if the address of the source included in the proxy        connection initiation request message is not included in the        list of permitted addresses.

The apparatus may be configured, subsequent to receiving the connectionrequest message from the target, to respond to receiving a further proxyconnection initiation request message from the source by causing sendingof the proxy setup request message addressed to the source.

The address of the target may be included in a payload of the proxyconnection initiation request.

The address of the source may be included in a payload of the proxyconnection initiation request.

The apparatus may be configured to include an address of the apparatusand an address of the source in the proxy setup request message.

The apparatus may be configured to include data for connection setup ina payload of the proxy setup request message.

The advertising message may be an ADV_DIRECT_IND PDU.

The connection request message may be a CONNECT_REQ PDU.

The proxy connection initiation request message may be encapsulated in aBluetooth Low Energy Link Layer packet.

The proxy setup request message may be encapsulated in a Bluetooth LowEnergy Link Layer packet.

A second aspect of the invention provides apparatus configured:

-   -   to send one or more advertising messages addressed to a target        using an address of the target;    -   to respond to determining that no response to the advertising        message has been received from the target by sending a proxy        connection initiation request message, the proxy connection        initiation request message being a request to provide a proxy        and including the address of the target and an address of the        apparatus; and    -   to respond to receiving a proxy setup request message from a        proxy, the proxy setup request message being addressed to the        apparatus, by connecting to the proxy device.

The apparatus may be configured to send advertising messages addressedto a target using an address of the target repeatedly until it isdetected that a first timeout has expired or that a response has beenreceived from the target.

The apparatus may be configured to send proxy connection initiationrequest messages repeatedly until it is detected that a second timeouthas expired or that the proxy setup request message has been receivedfrom the proxy.

The apparatus may be configured to read an address of the proxy from thereceived proxy setup request message, and to connect to the proxy deviceconditional on the address of the proxy being included in a list ofpermitted proxy addresses.

The apparatus may be configured to include the address of the target ina payload of the proxy connection initiation request.

The apparatus may be configured to include the address of the apparatusin a payload of the proxy connection initiation request.

The proxy setup request message may include an address of the proxy andan address of the apparatus.

The proxy setup request message may include data for connection setup ina payload thereof.

The advertising message may be an ADV_DIRECT_IND PDU.

The connection request message may be a CONNECT_REQ PDU.

The proxy connection initiation request message may be encapsulated in aBluetooth Low Energy Link Layer packet.

The proxy setup request message may be encapsulated in a Bluetooth LowEnergy Link Layer packet.

A third aspect of the invention provides a method comprising:

-   -   responding to receiving a proxy connection initiation request        message from a source, the proxy connection initiation request        message being a request to provide a proxy and including an        address of a target and an address of the source, by causing        sending of an advertising message addressed to the target; and    -   responding subsequently to receiving a connection request        message from the target by causing sending of a proxy setup        request message addressed to the source.

The method may comprise responding to receiving the connection requestmessage from the target by connecting to the target.

The method may comprise connecting to the source following causingsending of the proxy setup request message addressed to the source.

The method may comprise causing addition of an address relating to thesource and an address relating to the target to a record in a database.

The method may comprise responding to detecting ceasing of theconnection with the source and/or the target by causing updating of therecord in the database.

The method may comprise responding to receiving a first data packetafter connection to the source by extracting an address relating to asender of the first data packet, using the address relating to thesender to identify the record in the database, extracting an addressrelating to a recipient from the identified record in the database, andgenerating a second data packet including a payload included in thefirst data packet and addressed to the recipient with the addressrelating to the recipient extracted from the record in the database.

The method may comprise responding to detecting ceasing of theconnection with the source by causing disconnection of the connectionwith the target.

The method may comprise responding to detecting ceasing of theconnection with the target by causing disconnection of the connectionwith the source.

The method may comprise scanning for proxy connection initiation requestmessages.

The method may comprise scanning for proxy connection initiation requestmessages when a proxy mode setting is enabled and refraining fromscanning for proxy connection initiation request messages when a proxymode setting is disabled.

The method may comprise:

-   -   responding to receiving the proxy connection initiation request        message by determining whether the address of the source        included in the proxy connection initiation request message is        included in a list of permitted addresses;    -   causing sending of the advertising message addressed to the        target if the address of the source included in the proxy        connection initiation request message is included in the list of        permitted addresses; and    -   refraining from sending the advertising message addressed to the        target if the address of the source included in the proxy        connection initiation request message is not included in the        list of permitted addresses.

The method may comprise, subsequent to receiving the connection requestmessage from the target, responding to receiving a further proxyconnection initiation request message from the source by causing sendingof the proxy setup request message addressed to the source.

The address of the target may be included in a payload of the proxyconnection initiation request.

The address of the source may be included in a payload of the proxyconnection initiation request.

The method may comprise including an address of the apparatus and anaddress of the source in the proxy setup request message.

The method may comprise including data for connection setup in a payloadof the proxy setup request message.

The advertising message may be an ADV_DIRECT_IND PDU.

The connection request message may be a CONNECT_REQ PDU.

The proxy connection initiation request message may be encapsulated in aBluetooth Low Energy Link Layer packet.

The proxy setup request message may be encapsulated in a Bluetooth LowEnergy Link Layer packet.

A fourth aspect of the invention provides a method comprising:

-   -   sending one or more advertising messages addressed to a target        using an address of the target;    -   responding to determining that no response to the advertising        message has been received from the target by sending a proxy        connection initiation request message, the proxy connection        initiation request message being a request to provide a proxy        and including the address of the target and an address of the        apparatus; and    -   responding to receiving a proxy setup request message from a        proxy, the proxy setup request message being addressed to the        apparatus, by connecting to the proxy device.

The method may comprise sending advertising messages addressed to atarget using an address of the target repeatedly until it is detectedthat a first timeout has expired or that a response has been receivedfrom the target.

The method may comprise sending proxy connection initiation requestmessages repeatedly until it is detected that a second timeout hasexpired or that the proxy setup request message has been received fromthe proxy.

The method may comprise reading an address of the proxy from thereceived proxy setup request message, and connecting to the proxy deviceconditional on the address of the proxy being included in a list ofpermitted proxy addresses.

The method may comprise including the address of the target in a payloadof the proxy connection initiation request.

The method may comprise including the address of the apparatus in apayload of the proxy connection initiation request.

The proxy setup request message may include an address of the proxy andan address of the apparatus.

The proxy setup request message may include data for connection setup ina payload thereof.

The advertising message may be an ADV_DIRECT_IND PDU.

The connection request message may be a CONNECT_REQ PDU.

The proxy connection initiation request message may be encapsulated in aBluetooth Low Energy Link Layer packet.

The proxy setup request message may be encapsulated in a Bluetooth LowEnergy Link Layer packet.

A fifth aspect of the invention provides a computer program comprisinginstructions that when executed by a computer apparatus control it toperform the method above.

A sixth aspect of the invention provides a non-transitorycomputer-readable storage medium having stored thereon computer-readablecode, which, when executed by computing apparatus, causes said computingapparatus to perform a method comprising:

-   -   responding to receiving a proxy connection initiation request        message from a source, said proxy connection initiation request        message being a request to provide a proxy and including an        address of a target and an address of said source, by causing        sending of an advertising message addressed to said target; and    -   responding subsequently to receiving a connection request        message from said target by causing sending of a proxy setup        request message addressed to said source.

A seventh aspect of the invention provides a non-transitorycomputer-readable storage medium having stored thereon computer-readablecode, which, when executed by computing apparatus, causes said computingapparatus to perform a method comprising:

-   -   sending one or more advertising messages addressed to a target        using an address of said target;    -   responding to determining that no response to said advertising        message has been received from said target by sending a proxy        connection initiation request message, said proxy connection        initiation request message being a request to provide a proxy        and including said address of said target and an address of said        apparatus; and    -   responding to receiving a proxy setup request message from a        proxy, said proxy setup request message being addressed to said        apparatus, by connecting to said proxy device.

An eighth aspect of the invention provides apparatus, said apparatushaving at least one processor and at least one memory havingcomputer-readable code stored therein which when executed controls saidat least one processor:

-   -   to respond to receiving a proxy connection initiation request        message from a source, said proxy connection initiation request        message being a request to provide a proxy and including an        address of a target and an address of said source, by causing        sending of an advertising message addressed to said target; and    -   to respond subsequently to receiving a connection request        message from said target by causing sending of a proxy setup        request message addressed to said source.

Said computer-readable code when executed may control said at least oneprocessor to respond to receiving said connection request message fromsaid target by connecting to said target.

Said computer-readable code when executed may control said at least oneprocessor to connect to said source following causing sending of saidproxy setup request message addressed to said source.

Said computer-readable code when executed may control said at least oneprocessor to cause addition of an address relating to said source and anaddress relating to said target to a record in a database.

Said computer-readable code when executed may control said at least oneprocessor to respond to detecting ceasing of said connection with saidsource and/or said target by causing updating of said record in saiddatabase.

Said computer-readable code when executed may control said at least oneprocessor to respond to receiving a first data packet after connectionto said source by extracting an address relating to a sender of saidfirst data packet, using said address relating to said sender toidentify said record in said database, extracting an address relating toa recipient from said identified record in said database, and generatinga second data packet including a payload included in said first datapacket and addressed to said recipient with said address relating tosaid recipient extracted from said record in said database.

Said computer-readable code when executed may control said at least oneprocessor to respond to detecting ceasing of said connection with saidsource by causing disconnection of said connection with said target.

Said computer-readable code when executed may control said at least oneprocessor to respond to detecting ceasing of said connection with saidtarget by causing disconnection of said connection with said source.

Said computer-readable code when executed may control said at least oneprocessor to scan for proxy connection initiation request messages.

Said computer-readable code when executed may control said at least oneprocessor to scan for proxy connection initiation request messages whena proxy mode setting is enabled and to refrain from scanning for proxyconnection initiation request messages when a proxy mode setting isdisabled.

Said computer-readable code when executed may control said at least oneprocessor:

-   -   to respond to receiving said proxy connection initiation request        message by determining whether said address of said source        included in said proxy connection initiation request message is        included in a list of permitted addresses;    -   to cause sending of said advertising message addressed to said        target if said address of said source included in said proxy        connection initiation request message is included in said list        of permitted addresses; and    -   to refrain from sending said advertising message addressed to        said target if said address of said source included in said        proxy connection initiation request message is not included in        said list of permitted addresses.

Said computer-readable code when executed may control said at least oneprocessor, subsequent to receiving said connection request message fromsaid target, to respond to receiving a further proxy connectioninitiation request message from said source by causing sending of saidproxy setup request message addressed to said source.

Said address of said target is included in a payload of said proxyconnection initiation request.

Said address of said source is included in a payload of said proxyconnection initiation request.

Said computer-readable code when executed may control said at least oneprocessor to include an address of said apparatus and an address of saidsource in said proxy setup request message.

Said computer-readable code when executed may control said at least oneprocessor to include data for connection setup in a payload of saidproxy setup request message.

Said advertising message may be an ADV_DIRECT_IND PDU.

Said connection request message may be a CONNECT_REQ PDU.

Said proxy connection initiation request message may be encapsulated ina Bluetooth Low Energy Link Layer packet.

Said proxy setup request message may be encapsulated in a Bluetooth LowEnergy Link Layer packet.

A ninth aspect of the present invention provides apparatus, saidapparatus having at least one processor and at least one memory havingcomputer-readable code therein which when executed may control said atleast one processor:

-   -   to send one or more advertising messages addressed to a target        using an address of said target;    -   to respond to determining that no response to said advertising        message has been received from said target by sending a proxy        connection initiation request message said proxy connection        initiation request message being a request to provide a proxy        and including said address of said target and an address of said        apparatus; and    -   to respond to receiving a proxy setup request message from a        proxy, said proxy setup request message being addressed to said        apparatus, by connecting to said proxy device.

Said computer-readable code when executed may control said at least oneprocessor to send advertising messages addressed to a target using anaddress of said target repeatedly until it is detected that a firsttimeout has expired or that a response has been received from saidtarget.

Said computer-readable code when executed may control said at least oneprocessor to send proxy connection initiation request messagesrepeatedly until it is detected that a second timeout has expired orthat said proxy setup request message has been received from said proxy.

Said computer-readable code when executed may control said at least oneprocessor to read an address of said proxy from said received proxysetup request message, and to connect to said proxy device conditionalon said address of said proxy being included in a list of permittedproxy addresses.

Said computer-readable code when executed may control said at least oneprocessor to include said address of said target in a payload of saidproxy connection initiation request.

Said computer-readable code when executed may control said at least oneprocessor to include said address of said apparatus in a payload of saidproxy connection initiation request.

Said proxy setup request message includes an address of said proxy andan address of said apparatus.

Said proxy setup request message includes data for connection setup in apayload thereof.

Said advertising message may be an ADV_DIRECT_IND PDU.

Said connection request message may be a CONNECT_REQ PDU.

Said proxy connection initiation request message may be encapsulated ina Bluetooth Low Energy Link Layer packet.

Said proxy setup request message may be encapsulated in a Bluetooth LowEnergy Link Layer packet.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of example embodiments of the presentinvention, reference is now made to the following descriptions taken inconnection with the accompanying drawings in which:

FIG. 1 is a schematic diagram of three devices that are used to discussvarious embodiments of the invention;

FIG. 2 presents the format of an Advertising Channel PDU used inembodiments of the invention;

FIG. 3 shows a payload of a proxy connection initiation request messageused in embodiments of the invention;

FIG. 4 shows a payload of a proxy setup request message used inembodiments of the invention;

FIG. 5 is a signaling diagram and illustrates operation of the threedevices of FIG. 1 according to various aspects of the invention;

FIG. 6 is a flow chart illustrating operation of the client device ofFIG. 1 when setting up a proxy connection according to various aspectsof the invention;

FIG. 7 is a flow chart illustrating operation of the proxy device ofFIG. 1 when setting up a proxy connection according to various aspectsof the invention;

FIG. 8 is a flow chart illustrating operation of the proxy device ofFIG. 1 when forwarding data packets according to various aspects of theinvention; and

FIG. 9 is a flow chart illustrating operation of the proxy device ofFIG. 1 when managing a proxy connection according to various aspects ofthe invention.

DETAILED DESCRIPTION OF VARIOUS EMBODIMENTS

The following acronyms are used in the specification and have themeanings referred to:

BLE: Bluetooth Low Energy

LE: Low Energy

BT SIG: Bluetooth Special Interest Group

RFU: Reserved for Future Use

The latest version of the BLE specification defines three advertisingchannels, which serve for device discovery and other broadcastingpurpose. To identify BLE devices, two important identifies—DeviceAddress and Device Name are highly relied upon.

According to the BLE specification, packets sent in the advertisingchannels (index=37, 38 and 39) shall contain the device addresses, whichare used to identify a LE device. There are two types of deviceaddresses: public device address and random device address, each of themis 48 bits in length, and a device shall contain at least one type ofdevice address and may contain both.

Public Device Address

The content of a public device address contains two fields:

-   -   company_assigned field is in the 24 least significant bits    -   company_id field is in the 24 most significant bits

The public device address shall be created in accordance with section9.2 (“48-bit universal LAN MAC addresses”) of the IEEE 802-2001 standard(http://standards.ieee.org/getieee802/download/802-2001.pdf) and using avalid Organizationally Unique Identifier (OUT) obtained from the IEEERegistration Authority (seehttp://standards.ieee.org/regauth/oui/forms/and sections 9 and 9.1 ofthe IEEE 802-2001 specification).

Random Device Address

A random device address is divided into the following two fields:

-   -   hash field is in the 24 least significant bits    -   random field is in the 24 most significant bits

The detailed specification of the hash field and random field can befound in BT Spec. v4.0, Vol. 3, Part C, Section 10.8.2.3 and Section10.8.2.2, respectively.

On the other hand, the Generic Access Profile (GAP) also provides aLocal Name AD Type to contain the device name in the BLE advertisingdata (BT Specification. v4.0, Vol. 3, Part C, Section 11.1.2).

FIG. 1 shows a system including components according to embodiments ofthe invention. The system 100 includes a client device 110, a proxydevice 120 and a target device 130. The client device 110 includes aBluetooth Low Energy (BLE) module which operates according to the BLEstandard, currently at version 4.0. The proxy device 120 includes a BLEmodule 121, which also operates according to the BLE standard. Thetarget device 130 includes a BLE module 131, which also operatesaccording to the BLE standard.

Each of the BLE modules 111, 121, 131 is substantially the same, so onlyone will be described here. The BLE module in of the client terminal 110includes a processor 112. The processor 112 is connected to volatilememory such as RAM 113 by a bus 118. The bus 118 also connects theprocessor 112 and the RAM 113 to non-volatile memory, such as ROM 114. Atransceiver 115 is coupled to the bus 118, and thus also to theprocessor 112 and the memories 113, 114. An antenna 116 is coupled tothe transceiver 115. Within the ROM 114 is stored a computer program117. This may be in the form of firmware. Alternatively, it may be inthe form of an operating system and one or more applications, forinstance.

In the BLE module 121 of the proxy device 120, a processor 122, RAM 123,ROM 124, a transceiver 125, an antenna 126, software 127 and a bus 128are constituted and connected in the same way as in the correspondingcomponents of the BLE module iii. Similarly, in the target module 130,the BLE module 131 includes a processor 132, RAM 133, ROM 134, atransceiver 135, an antenna 136, software 137 and a bus 138 having thesame functions and connections as the corresponding components in theBLE module in of the client device 110.

Each of the BLE modules 111, 121, 131 may take any suitable form.Generally speaking, the BLE module in of the client device 110 maycomprise processing circuitry 112, including one or more processors, anda storage device 114, 113, comprising a single memory unit or aplurality of memory units. The storage device 114, 113 may storecomputer program instructions that, when loaded into the processingcircuitry 112, control the operation of the BLE module in.

In addition to the BLE module 111, the client terminal 110 comprises anumber of components which are indicated together at 119. Thesecomponents 119 may include any suitable combination of a display, a userinput interface, a communication interface, a speaker, a microphone, anda camera. The components 119 may include a processor arrangement, avolatile memory (e.g. RAM) and non-volatile memory (e.g. ROM), connectedto the processor arrangement. The proxy terminal 120 comprises a numberof such components which are indicated together at 129. The targetterminal 130 comprises a number of such components which are indicatedtogether at 139.

The terminals 110, 120, 130 may be mobile phones, smart phones, tabletcomputers, laptop computers etc. The terminals 110, 120, 130 may bebased around any suitable operating system, for instance the Symbianoperating system or Microsoft Windows operating system, although anyother operating system may instead be used. The terminals 110, 120, 130may run different operating systems.

Each of the BLE modules 111, 121, 131 is configured to communicate withother BLE or Bluetooth modules. Basic operation of the modules is thesame.

Generally speaking, embodiments of the invention allow a Bluetoothconnection between the client device 110 and the target device 130 byway of the proxy device 120. To achieve this, the client device 110 andthe proxy device 120 each operate differently to conventional operation.Through the different operation, the client device 110 may have aBluetooth connection with a target device 130 even though the devicesmay not be within range of one another such that they can form aBluetooth connection directly.

Briefly, the client device 110 is configured to transmit a new kind ofadvertising channel packet data unit (PDU). In response to receiving acertain advertising PDU from the client device 110, the proxy device 120sends an advertising PDU to the target device 130. Thereafter, the proxydevice 120 acts as a go-between for the client device 110 and the targetdevice 130.

Embodiments of the present invention provide an extension to the currentBluetooth standard in three ways. The first is that it moves away frompeer-to-peer connection set-up, which is the only connection set-up thatis possible with the current Bluetooth standard. The second is to extendthe limited transmission range (of approximately 50 metres) which isinherent in the current Bluetooth standard. The third is to providerouting capability, which is currently absent from the Bluetoothstandard.

When a BLE packet is transmitted in an advertising physical channel, thePDU shall be the Advertising Channel PDU. When a packet is transmittedin a data physical channel, the PDU shall be the Data Channel PDU. Ageneral advertising channel PDU will now be described with reference toFIG. 2. After the general description of the PDU, it will be describedwhat differences there are between PDUs used in embodiments of thisinvention and other PDUs.

In a BLE embodiment, the format of link layer packet that contains theAdvertising Channel PDU is shown in FIG. 2. The PDU is encapsulated inthe link layer packet.

As shown in FIG. 2, there are four main components to the message. Thefirst part is a preamble. The second part is an Access Address. Thethird part is a packet data unit (PDU). The fourth part is a cyclicredundancy check (CRC). Here, the preamble is one octet (eight databits, also known as one byte). The Access Address is four octets,generated by the device in the Initiating State and will be used in datachannel packets to distinguish each Link Layer connection between anytwo devices (BT Specification. v4.0, Vol. 6, Part B, Section 2.1.2). ThePDU is between two and 39 octets. The CRC is three octets.

As shown in FIG. 2, the PDU includes two main sections. The first is theheader, and the second is the payload. The header here has 16 bits (twooctets). The payload has a length that is between zero and 37 octets, asper the length field in the header part of the PDU.

The header is shown in FIG. 2 as being divided into six fields. The PDUtype field comprises four bits. A first reserved for future use (RFU)field comprises two bits. A TxAdd field is one bit. An RxAdd field isone bit. The Length field includes six bits. The sixth field is a secondRFU field which includes two bits.

The RFU bits in the header of the PDU are reserved for future use (RFU)in version 4.0 of the BLE specification.

In this embodiment, two new PDU Types are provided. The formats of thePDU Types are as follows:

PDU Type (b₃b₂b₁b₀) Packet Name 0111 (or other reserved number)ADV_PROXY_IND 1000 (or other reserved number) PROXY_REQ

The current BLE specification defines several types of advertisingchannel PDU, e.g., ADV_IND (ob0000), ADV_DIRECT_IND (ob0001), andCONNECT_REQ (ob0101) (see Bluetooth V4.0, Vol. 6, Part B, Sec. 2.3).

The payload section of the PDU may include different fields, inaccordance to the specification of different types of Advertising PDU.For example, the ADV_IND PDU includes two fields. The first is sixoctets long and is called AdvA. The second part is between zero and 31octets long and is called AdvData. For another example, theADV_DIRECT_IND PDU includes two fields. The first is six octets long andis called AdvA. The second part is six octets long and is called InitA.

FIG. 3 shows the payload of the ADV_PROXY_IND PDU. This payload, whichis referred to as the Payload field in FIG. 2, is the detailed formatwhen the PDU Type filed is set to 0111.

The payload of ADV_PROXY_IND PDU consists of two fields: AdvA and TgtA.

The AdvA field includes the address of the advertiser. The AdvA fieldcontains either the advertiser's public or random device address. Whichaddress is included is indicated by the value in the TxAdd field. In theembodiment described with reference to FIG. 1, the advertiser is theclient device 110.

The TgtA field is the address of the target with which the advertiser isattempting to connect. The TgtA field contains the public or randomdevice address of the target. Which address is included is indicated bythe value in the RxAdd field. In the embodiment described with referenceto FIG. 1, the target is the target device 130.

FIG. 4 shows the payload of the PROXY_REQ PDU. This payload, which isreferred to as the Payload field in FIG. 2, is the detailed format whenthe PDU Type filed is set to 1000.

The payload of PROXY_REQ PDU consists of three fields: PrxA, AdvA andLLData.

The PrxA field contains the initiator's public or random device address.Which address is included is indicated by the value in the TxAdd field.In the embodiment described with reference to FIG. 1, the initiator isthe proxy device 120.

The AdvA field contains the advertiser's public or random deviceaddress. Which address is included is indicated by the value in theRxAdd field.

The LLData field contains specific data for connection setup, whichassemble those contained in the CONNECTREQ_PDU (see Bluetooth V4.0, Vol.6, Part B, Sec. 2.3.3.1, FIG. 2.11).

Operation of the various devices in providing a proxy-based connectionbetween the client device 110 and the target device 130 will now bedescribed with reference to FIGS. 5 to 9.

Reference is made firstly to FIG. 5. Here, the client device 110 intendsto communicate with the target device 130. However, the radiopropagation conditions between the client device 110 and the targetdevice 130 are such that direct communication cannot be establishedbetween these devices. The proxy device 120 has reachability to both theclient device 110 and the target device 130. The proxy device 120 mayact as an intermediary to assist the client device 110 accessing thetarget device 130.

Initially, the client device 110 transmits direct advertising messages150A. These are PDUs of the ADVDIRECT_IND_PDU Type. The ADV_DIRECT_INDPDUs are addressed to the target device 130 in the sense that theyinclude the address of the target device 130 in the InitA field of thePDU. Because the target device 130 is out of range of the client device110, none of the ADV_DIRECT_IND PDU messages reaches the target device130.

After the client device 110 has detected that a number of ADV_DIRECT_INDPDU messages have been transmitted without a response from the targetdevice 130, the client device 110 stops sending ADV_DIRECT_IND PDUmessages 150 and instead starts sending ADV_PROXY_IND PDU messages 151.These messages are configured as described above. As such, the PDU Typefield is populated with the data that is reserved for the ADV_PROXY_INDPDU (in this example 0111). Also, the AdvA field in the payload of theADV_PROXY_IND PDU includes the address of the client device 110. TheTgtA field in the payload of the ADV_PROXY_IND PDU includes the addressof the target device 130 with which the client device 110 is attemptingto connect.

The proxy 120 responds to receiving an ADV_PROXY_IND PDU 151 from theclient device 110 by sending an ADV_DIRECT_IND PDU 152, which is thenreceived at the target 130. The ADV_DIRECT_IND PDU 152 may take anysuitable form and may for instance take the form mandated by the BLEspecification. The ADV_DIRECT_IND PDU is addressed to the target device130 by including the address of the target device that was received inthe TgtA field of the ADV_PROXY_IND PDU 151 in the InitA field of theADV_DIRECT_IND PDU.

In response to receiving the ADV_DIRECT_IND PDU 152, the target 130sends a CONNECT_REQ PDU 153 to the proxy 120. The CONNECT_REQ PDU 153may take any suitable form, and may for instance take the form specifiedin section 2.3 of part B of Bluetooth v4.0.

Following receipt of the CONNECT_REQ PDU 153 by the proxy device 120, aBLE connection 154 is established between the proxy device 120 and thetarget device 130.

After having received the CONNECT_REQ PDU 153 from the target device130, the proxy device 120 waits until it receives another ADV_PROXY_INDPDU 151 from the client device 110. Upon receiving the nextADV_PROXY_IND PDU 151, the proxy device 120 sends a PROXY_REQ PDU 155 tothe client device 110. The PROXY_REQ PDU 155 takes the form specifiedabove. In particular, the PDU Type field in the PROXY_REQ PDU includes1000, or whatever other number is assigned to the PROXY_REQ PDU. ThePROXY_REQ PDU 155 includes the address of the proxy device 120 in thePrxA field. Whether the address is the public or random address isindicated by data included in the TxAdd field. The AdvA field includesthe address of the client device 110. Whether this is the public orrandom address is indicated by the data stored in RxAdd. The LLDatafield includes specific data for connection setup. The specific data forthe connection setup that is included in the LLData field corresponds tothe data included in the CONNECT_REQ PDU 153, although it insteadrelates to the connection between the proxy device 120 and the clientdevice 110.

Upon receiving the PROXY_REQ PDU 155, a BLE connection 156 isestablished between the client no and the proxy device 120.

By virtue of the BLE connection 156 between the client device 110 andthe proxy device 120 and the other BLE connection 154 between the proxydevice 120 and the target device 130, a proxy-based connection 157 isestablished between the client device no and the target device 130.

In this proxy-based connection 157, there are a number of things tonote. The first is that the proxy device 120 acts as a High Anonymityproxy between the client device no and the target device 130. Secondly,the client device 110 connects to the proxy 120 as through it isconnecting to the target device 130. Put another way, once the BLEconnection 156 is established between the client device 110 and theproxy device 120, the client device 110 transmits and receives packetsas though it were connected directly to the target device 130. Thirdly,the target device 130 is unaware of the existence of the client device110 and does not know the accessing activities of the client device 110,but considers that it is communicating with a proxy device 120. Putanother way, once the BLE connection 154 is established between theproxy device 120 and the target device 130, the target device 130 has ananonymous connection, but not a transparent connection, to the clientdevice 110.

FIG. 6 illustrates steps taken by the client device 110 in the processof setting up the proxy-based connection 157 with the target device 130.

The operation starts at step S1.

At step S2, the client device 110 sends the ADV_DIRECT_IND PDU 150. Atstep S3, it is determined whether a CONNECT_REQ PDU has been received.Such a PDU will be received where the target device 130 is within rangeof the client device 110. In the event of a positive determination, atstep S4 the client device 110 connects to the target device 130. Afterstep S4, the operation ends at step S5.

If a CONNECT_REQ PDU is not received at step S3, at step S6 it isdetermined whether an advertising timeout has expired. The timeout maybe expressed in terms of a measure of time or in terms of a number ofADV_DIRECT_IND messages. If the timeout has not expired, the operationreturns to step S2, where another ADV_DIRECT_IND message is transmitted.Steps S2, S3 and S6 are repeated until either a CONNECT_REQ PDU message153 is determined to have been received at step S3 or the advertisingtimeout is determined to have expired at step S6.

Once the timeout expires at step S6, at step S7 an ADV_PROXY_IND PDU 151is sent by the client device 110. At step S8, it is then determinedwhether a PROXY_REQ PDU 155 has been received. On a negativedetermination, at step S9 it is determined whether an advertisingtimeout has expired. The timeout of step S9 may be expressed as ameasure of time or as a measure of a number of PROXY_REQ messages. Ifthe timeout has not expired, the operation returns to step S7, whereanother ADV_PROXY_IND PDU is transmitted.

If at step S9 it is determined that the timeout has expired, theoperation proceeds to step S5, where it ends.

Steps S7, S8 and S9 are repeated until either it is determined at stepS9 that the timeout has expired or it is determined at step S8 that aPROXY_REQ PDU has been received.

On a positive determination at step S8, the operation proceeds to anoptional step S10. Here, it is determined whether the PrxA that isincluded in the received PROXY_REQ PDU is included in a white list ofpermitted proxy devices 120. On a negative determination, the operationreturns to step S7, where another ADV_PROXY_IND message is transmitted.On a positive determination, or if the optional step S10 is not present,at step S11 the client device 110 connects to the proxy device 120.Following connection at step S11, the operation ends at step S5.

The inclusion of step S10 and the checking of the PrxA identified in thePROXY_REQ PDU against the white list provides security for the clientdevice 110. In particular, it ensures that a connection is made only toproxy devices 120 that are trustable by the client device 110, If aproxy device 110 that responds with a PROXY_REQ message is not trustedby the client device 110, no connection is made between the clientdevice no and the proxy device 120.

The provision of steps S2, S3 and S6 has an effect that a proxyconnection between the client device 110 and the target device 130 ismade only if direct connection is not possible, or at least has not beenachieved within the timeout that is applied by step S6. This helps toreduce unnecessary use of proxy devices 120.

Operation of the proxy device 120 during connection setup will now bedescried with reference to FIG. 7.

Operation begins at step S1. At step S2, the proxy device 120 scans forADV_PROXY_IND PDU messages. At step S3, it is determined whether anADV_PROXY_IND PDU has been received. On a negative determination, theoperation proceeds to step S2. As such, steps S2 and S3 are repeateduntil an ADV_PROXY_IND PDU is received.

On a positive determination from step S3, at step S4 it is determinedwhether an AdvA included in the received ADV_PROXY_IND PDU is in a whitelist contained within the proxy device 120. If the AdvA is not in thewhite list, the operation returns to step S2, where scanning isrepeated. On a positive determination, the operation proceeds to stepS5. It will be appreciated that step S4 is optional. If step S4 isomitted, a positive determination from step S3 proceeds directly to stepS5.

At step S5, the proxy device 120 connects to the target device 130. Thisinvolves sending the ADV_DIRECT_IND PDU 152 that is shown in FIG. 5, andthen receiving the CONNECT_REQ PDU 153 from the target device 130.

At step S6, it is determined whether connection with the target device130 has succeeded. In the event of an unsuccessful connection, theoperation returns to step S2, where scanning is repeated. If connectionis determined to have succeeded, at step S7 the proxy device 120responds to the client device 110 with a PROXY_REQ PDU 155 afterreceiving an ADV_PROXY_IND PDU 151 from the client device 110. Thisinitiates a connection between the proxy device 120 and the clientdevice 110.

At step S8, it is determined whether the proxy device 120 succeeded inconnecting with the client device 110. On a positive determination, atstep S9 the Client Access Address and the Target Access Address areadded to a proxy database that is maintained within the proxy device120. After step S9, the operation ends at step S10.

If it is determined at step S8 that the connection between the proxydevice 120 and the client device 110 did not succeed, at step S10, theproxy device 120 disconnects with the target device 130. Following S11,the operation ends at step S10.

After connection setup is completed at step S10, the proxy basedconnection 157 is in place between the client device 110 and the targetdevice 130 by way of the proxy device 120.

It will be noted that as a result of the connection setup process shownin FIG. 7, the proxy device 120 acts as a master to the client device110 and acts as a slave device to the target 130. Thus, the proxy device120 acts as a master and slave simultaneously. In regards to theproxy-based connection 157, the client 110 acts as a slave to the targetdevice 130.

The proxy device 120 acting as a provider of the proxy-based connection157 between the client device 110 and the target device 130 is not tothe direct benefit of the proxy device 120 but instead benefits theclient device 110 and the target device 130. Providing the proxy-basedconnection 157 presents a drain on battery resources of the proxy device120, and potentially also other resources. Whilst providing theproxy-based connection 157, the proxy device 120 may be unable toconnect to the client device 110 or the target device 130 by a Bluetoothconnection for its own purposes. However, the proxy device 120 mayconnect to other Bluetooth devices except the client device 110 and thetarget device 130.

The proxy device 120 is configured to allow or disallow proxy-basedconnections by way of a setting. The setting may be changed by a userthrough a user interlace provided by the components 129. The setting mayadditionally be changed by an application or operating system of theproxy device 120. Allowing a user of the proxy device 120 to specifywhether the proxy device 120 is able to provide a proxy-based connection157 between other devices allows the user to control how the Bluetoothresources of the proxy device 120 are used. The proxy device 120 may beconfigured to allow the user to specify that use of the proxy device 120to provide proxy-based connections 157 between other devices is enabledonly when there is sufficient battery level remaining, and may bedisabled when remaining battery level falls below a threshold, and toset the setting accordingly.

Operation of the proxy device 120 when forwarding data as part of theproxy-based connection 157 will now be described with reference to FIG.8.

Operation begins at step S1. At step S2, a packet is retrieved from areceiving buffer of the proxy device 120. The receiving buffer mayutilise a memory of the BLE module 121, for instance it may utilise theRAM 123.

At step S3, the Access Address data is extracted from the relevant fieldof the packet retrieved from the receiving buffer. At step S4, it isdetermined whether the data in the Access Address is found in the proxydatabase. The Access Address will be found in the proxy database if aproxy-based connection 157 was successfully connected and the data wasadded to the proxy database at step S9 of FIG. 7.

On a positive determination from step S4, the Access Address that ismapped to by the record that was found in the proxy database isobtained. At step S6, the payload of the packet retrieved from thereceiving buffer at step S2 is extracted. At step S7, a new packet isgenerated. The new packet includes the payload that was extracted atstep S6 and the mapped Access Address that was obtained at step S5. Atstep S8, the new packet is put into the sending buffer, after which itis transmitted from the proxy device 120.

Following step S8, the forwarding a data packet operation ends at stepS9.

If a negative determination results from step S4, at step S10 normalpacket processing is performed. Following step S10, preparation ends atstep S9. At step S10, the received packet is not forwarded.

It will be appreciated that the operation shown in FIG. 8 applies topackets that are received from the client device 110 and to packets thatare received from the target device 130. In the situation where areceived packet is from the client device 110 and is intended for thetarget device 130, the Access Address that is extracted at step S3 isdifferent from the Access Address that is extracted in the event ofreceiving a packet from the target device 130 and directed to the clientdevice 110. The mapped Access Address that is obtained at step S5 alsodepends on the direction in which the packet is travelling, namely fromthe client device 110 to the target device 130 or in the otherdirection. In particular it is the data from the opposite field of therecord that is provided in each case.

Operation of the proxy device 120 in connection management will now bedescribed with reference to FIG. 9.

Operation begins at step S1. At step S2 link disconnection is detected.This can be disconnection of the BLE connection 156 between the proxydevice 120 and the client no or the disconnection of the BLE connection154 between the proxy device 120 and the target 130. At step S3, theAccess Address of the link is obtained. At step S4 it is determinedwhether the Access Address is found in the proxy database. On a positivedetermination, the Access Address that is mapped by the record in theproxy database is obtained. At step S6, the link having the mappedAccess Address is disconnected. In the event of the disconnectioninitially of the BLE connection 156, it is the BLE connection 154between the proxy device 120 and the target device 130 that isdisconnected at step S6. In the event of initial disconnection of theBLE connection 154 between the proxy device 120 and the target device130, it is the BLE connection 156 between the proxy device 120 and theclient device 110 that is disconnected at step S6.

At step S7, the record is removed from the proxy database. After step S7or following a negative determination at step S4, the operation ends atstep S8.

Connection management such as that described with reference to FIG. 9,particularly with reference to steps S2 and S6, provides the effect thatconnections that are no longer needed are disconnected, thereby freeingradio resources for the devices that would otherwise be connected andreducing power consumption etc. for those devices.

Removing the mapping record from the proxy database at step S7 has aneffect of freeing memory resources within the proxy device 120. It alsohas an effect of helping to ensure correct operation of the proxy device120 in the event of receiving a PDU that would otherwise result inaction being taken by the proxy device 120. Such actions includes theforwarding of packets, as is described with reference to FIG. 8.

It is advantageous for proxy devices 120 continually to monitor linkstatus. In this way, the termination of unneeded connections can beachieved quickly, thereby minimising the use of Bluetooth transceiverand battery etc. resources.

In BLE networks, the data link between any two BLE devices is identifiedonly by an Access Address (AA), which is generated during the course ofconnection establishment. So, a proxy device 120, working for a clientdevice 110 (say C1) and a target device 130 (say T1) has a mappingrecord <C1_AA, T1_AA> in the proxy database. When another client device110 (say C2) is trying to access the same target device T1, then theproxy device 120 does not react to the ADVPROXY_IND PDUs from theanother client device C2. If it did react, the proxy device 120 wouldconnect to the another client device C2 resulting in another mappingrecord <C2_AA, T1_AA>, and would not be able to discriminate where thepacket from the target device T1 should be forwarded.

If, on the other hand, the another client device C2 is trying to connecta different target device (say, T2), the proxy device 120 can respond tothe another client device C2 in this case since there will be noconfusion with a new mapping record <C2_AA, T2_AA> in the proxydatabase.

Therefore, the proxy device 120 may simultaneously provide a proxyconnection for more than one pair of client device and target device,but only if they are different Bluetooth devices.

The value of the timeout provided in step S6 of FIG. 6 may take anysuitable value. For instance, it may be 1.28 seconds. Clearly, the valueof the timeout dictates the number of ADV_DIRECT_IND PDU messages 150that are transmitted without establishing a connection. It also dictatesthe period before the client device attempts to initiate a proxyconnection by sending ADV_PROXY_IND PDUs 151.

The value of the timeout in step S9 of FIG. 6 may take any suitablevalue. For instance, the value of the timeout may be 10 seconds.Clearly, the value of the timeout dictates the period of time in whichproxy devices 120 have in order to set up a connection with the targetdevice 130 and then respond to the client device 110. A higher timeoutvalue gives proxy devices 120 a greater opportunity to take thenecessary steps, although at the expense of an increased time before theclient device 110 ceases trying to establish a proxy connection with thetarget device 130.

The interval of transmission of ADV_PROXY_IND PDUs 151, that are sent atstep S7 of FIG. 6, may take any suitable value. For instance, theinterval between successive messages may be one second. The lower theinterval between successive messages, the greater the number of messagesthat are sent in a given time period. The more messages that are sentthen the greater the probability that a proxy device 120 will havereceived the ADV_PROXY_IND PDU 151 from the client device 110 and beenable to establish a connection with the target device 130. However,because the establishment of the BLE connection 154 between the proxydevice 120 and the target device 130 necessarily takes some time, a highfrequency of transmission of ADV_PROXY_IND PDUs 151 may utiliseBluetooth and battery etc. resources of the client device 110 with nobenefit.

The above description does not address security of the BLE connections156 and 154. Encryption may be applied to the BLE connection 156 betweenthe client device 110 and the proxy device 120. Encryption mayalternatively or in addition be provided to the BLE connection 154between the proxy device 120 and the target device 130. Encryption neednot be provided to both of the connections 154 and 156. However, if onlyone connection is encrypted and the other is not, packets may beeavesdropped by a device in the same general location as one of thelinked devices.

The forwarding of data by the proxy device 120 that is described withreference to FIG. 8 applies to data channel PDUs. However, controlchannel PDUs are not forwarded by the proxy device 120. Instead, controlchannel PDUs relate to the specific connection 154 or 156 and are notrelevant to the device 110, 130 that is not part of the specificconnection. As such, control channel PDUs are not forwarded by the proxydevice 120.

As the proxy device 120 has the role of a slave to the client device 110and the role of a master to the target device 130, the proxy 120 isconfigured to forward received data channel PDUs with minimal delay.This helps to optimise the proxy-based connection 157 between the clientdevice 110 and the target device 130. This may be achieved by checkingthe receiving buffer at step S2 of FIG. 8 frequently, and performing theremaining steps of FIG. 8 as a high priority once a packet is extractedfrom the receiving buffer.

The proxy device 120 may be configured to implement a multi-hopproxy-based connection. In these embodiments, the proxy 120 isconfigured differently to that described above. In these embodiments, inresponse to receiving an ADV_PROXY_IND PDU 151 from the client device110, the proxy device 120 transmits ADV_DIRECT_IND PDUs 152 as shown inFIG. 5. Upon the proxy device 120 detecting that a CONNECT-REQ PDU 153has not been received from the target device 130 within a period (whichmay be determined by a time-out), the proxy device 120 takes furthersteps. In particular, the proxy device 120 transmits ADV_PROXY_IND PDUs151 that includes the address of the target device 130 in the relevantfield. This then allows other proxy devices 120 to act in the waymentioned above with respect to the proxy device 120 to establish a BLEconnection 154 with the target device 130. In this way, a proxy-basedconnection 157 can be established between a client device no and a firstproxy device 120, through a second proxy device 120 to a target device130. The second proxy device 120 in this situation acts in the same wayas the proxy device 120 described in relation to the earlierembodiments. However, the first proxy device 120 operates a littledifferently, in particular by transmitting ADV_PROXY_IND PDUs 151 andreceiving PROXY_REQ PDUs 155. In effect, the first proxy device 120 actsin some ways the same as the client no and in some ways the same as thesecond proxy device 120.

The scenario described above implements a two hop proxy-basedconnection. Three or more hop proxy based connections may be establishedwhere intervening proxy devices are configured to operate in the sameway as the first proxy device 120 described above.

An effect of providing the proxy-based connection 157 with a singleintervening proxy device 120 is an extension of the communication range.By allowing for additional hops, the communication range can be extendedeven further.

Some further details of components and features and alternatives forthem will now be described.

The computer program instructions 117 may provide the logic and routinesthat enables the BLE module in to perform the functionality describedbelow. The computer program instructions 117 may be pre-programmed intothe BLE module 111. Alternatively, they may arrive at the BLE module 111via an electromagnetic carrier signal or be copied from a physicalentity such as a computer program product, a non-volatile electronicmemory device (e.g. flash memory) or a record medium such as a CD-ROM orDVD.

The processing circuitry 112 may be any type of processing circuitry.For example, the processing circuitry may be a programmable processorthat interprets computer program instructions and processes data. Theprocessing circuitry may include plural programmable processors.Alternatively, the processing circuitry may be, for example,programmable hardware with embedded firmware. The processing circuitryor processor 112 may be termed processing means.

Typically, the BLE module in comprises a processor 112 coupled connectedto both volatile memory 113 and non-volatile memory 114. The computerprogram is stored in the non-volatile memory 114 and is executed by theprocessor 112 using the volatile memory 113 for temporary storage ofdata or data and instructions. Examples of volatile memory include RAM,DRAM, SDRAM etc. Examples of non-volatile memory include ROM, PROM,EEPROM, flash memory, optical storage, magnetic storage, etc.

The BLE module 111 may be a single integrated circuit. It mayalternatively be provided as a set of integrated circuits (i.e. achipset). The BLE module 111 may alternatively be a hardwired,application-specific integrated circuit (ASIC).

The components 119 may be arranged in any suitable way. For instance,there may be provided processing circuitry, including one or moreprocessors, and a storage device, comprising a single memory unit or aplurality of memory units. The processing circuitry may be any type ofprocessing circuitry. For example, the processing circuitry may be aprogrammable processor that interprets computer program instructions andprocesses data. The processing circuitry may include plural programmableprocessors. Alternatively, the processing circuitry may be, for example,programmable hardware with embedded firmware. The processing circuitryor processor 112 may be termed processing means. The storage device maystore computer program instructions that, when loaded into theprocessing circuitry, control the operation of the client device 110.The computer program instructions may provide the logic and routinesthat enables the client device 110 to provide functions of the devicethat are not provided by the BLE module 111 on its own. The computerprogram instructions may be pre-programmed into the client device 110.Alternatively, they may arrive at the client device 110 via anelectromagnetic carrier signal or be copied from a physical entity suchas a computer program product, a non-volatile electronic memory device(e.g. flash memory) or a record medium such as a CD-ROM or DVD.

Typically, the components 119 of the client device 110 comprises aprocessor coupled connected to both volatile memory and non-volatilememory. The computer program is stored in the non-volatile memory and isexecuted by the processor using the volatile memory for temporarystorage of data or data and instructions. Examples of volatile memoryinclude RAM, DRAM, SDRAM etc. Examples of non-volatile memory includeROM, PROM, EEPROM, flash memory, optical storage, magnetic storage, etc.

The term ‘memory’ when used in this specification is intended to relateprimarily to memory comprising both non-volatile memory and volatilememory unless the context implies otherwise, although the term may alsocover one or more volatile memories only, one or more non-volatilememories only, or one or more volatile memories and one or morenon-volatile memories.

The communication interface may be configured to allow two-waycommunication with external devices and/or networks. The communicationinterface may be configured to communicate wirelessly via one or more ofseveral protocols such as Global System for Mobile Communications (GSM),Code Division Multiple Access (CDMA), Universal MobileTelecommunications System (UMTS) and IEEE 802.11 (Wi-Fi). Alternativelyor additionally, the communication interface 114 may be configured forwired communication with a device or network.

The apparatus may comprise further optional SW components which are notdescribed in this specification since they may not have directinteraction to embodiments of the invention.

Although the embodiments are described with reference to Bluetooth LowEnergy, it will be appreciated that the concepts may be applicable toother communication protocols. For instance, other embodiments of theinvention relate to versions of Bluetooth that are not concerned withthe Bluetooth Low Energy aspect of the Bluetooth standard. Otherembodiments relate instead to other communication protocols, which maytake any suitable form of wireless protocol, whether radio, optical orother.

Embodiments of the present invention may be implemented in software,hardware, application logic or a combination of software, hardware andapplication logic. The software, application logic and/or hardware mayreside on memory, or any computer media. In an example embodiment, theapplication logic, software or an instruction set is maintained on anyone of various conventional computer-readable media. In the context ofthis document, a “computer-readable medium” may be any media or meansthat can contain, store, communicate, propagate or transport theinstructions for use by or in connection with an instruction executionsystem, apparatus, or device, such as a computer.

A computer-readable medium may comprise a computer-readable storagemedium that may be any tangible media or means that can contain or storethe instructions for use by or in connection with an instructionexecution system, apparatus, or device, such as a computer as definedpreviously.

According to various embodiments of the previous aspect of the presentinvention, the computer program according to any of the above aspects,may be implemented in a computer program product comprising a tangiblecomputer-readable medium bearing computer program code embodied thereinwhich can be used with the processor for the implementation of thefunctions described above.

The computer program instructions may arrive at the apparatus via anelectromagnetic carrier signal or be copied from a physical entity suchas a computer program product, a memory device or a record medium suchas but not exclusively a CD-ROM or DVD, and/or an article of manufacturethat tangibly embodies the computer program.

Reference to “computer-readable storage medium”, “computer programproduct”, “tangibly embodied computer program” etc, or a “processor” or“processing circuit” etc. should be understood to encompass not onlycomputers having differing architectures such as single/multi processorarchitectures and sequencers/parallel architectures, but alsospecialised circuits such as field programmable gate arrays FPGA,application specify circuits ASIC, signal processing devices and otherdevices. References to computer program, instructions, code etc. shouldbe understood to express software for a programmable processor firmwaresuch as the programmable content of a hardware device as instructionsfor a processor or configured or configuration settings for a fixedfunction device, gate array, programmable logic device, etc. If desired,the different functions discussed herein may be performed in a differentorder and/or concurrently with each other. Furthermore, if desired, oneor more of the above-described functions may be optional or may becombined.

Although various aspects of the invention are set out in the independentclaims, other aspects of the invention comprise other combinations offeatures from the described embodiments and/or the dependent claims withthe features of the independent claims, and not solely the combinationsexplicitly set out in the claims.

It is also noted herein that while the above describes exampleembodiments of the invention, these descriptions should not be viewed ina limiting sense. Rather, there are several variations and modificationswhich may be made without departing from the scope of the presentinvention as defined in the appended claims.

What is claimed is:
 1. A method comprising: responding, at a BluetoothLow Energy (BLE)-enabled proxy device, to receiving a proxy connectioninitiation request message from a BLE-enabled source, the proxyconnection initiation request message being a request to provide a proxyand including an address of a BLE-enabled target and an address of thesource, by causing said proxy device to send a BLE advertising messageaddressed to the target; and responding, at said proxy device,subsequently to receiving a BLE connection request message from thetarget by causing said proxy device to send a proxy setup requestmessage addressed to the source.
 2. An apparatus comprising a BluetoothLow Energy (BLE)-enabled proxy device, said proxy device having at leastone processor and at least one non-transitory memory havingcomputer-readable code stored therein which when executed controls saidat least one processor: to respond, at said proxy device, to receiving aproxy connection initiation request message from a BLE-enabled source,said proxy connection initiation request message being a request toprovide a proxy and including an address of a BLE-enabled target and anaddress of said source, by causing said proxy device to send a BLEadvertising message addressed to said target; and to respond, at saidproxy device, subsequently to receiving a BLE connection request messagefrom said target by causing said proxy device to send a proxy setuprequest message addressed to said source.
 3. Apparatus as claimed inclaim 2, wherein said computer-readable code when executed controls saidat least one processor to respond to receiving said connection requestmessage from said target by connecting to said target.
 4. Apparatus asclaimed in claim 2, wherein said computer-readable code when executedcontrols said at least one processor to connect to said source followingcausing sending of said proxy setup request message addressed to saidsource.
 5. Apparatus as claimed in claim 2, wherein saidcomputer-readable code when executed controls said at least oneprocessor to cause addition of an address relating to said source and anaddress relating to said target to a record in a database.
 6. Apparatusas claimed in claim 5, wherein said computer-readable code when executedcontrols said at least one processor to respond to detecting ceasing ofsaid connection with said source and/or said target by causing updatingof said record in said database.
 7. Apparatus as claimed in claim 5,wherein said computer-readable code when executed controls said at leastone processor to respond to receiving a first data packet afterconnection to said source by extracting an address relating to a senderof said first data packet, using said address relating to said sender toidentify said record in said database, extracting an address relating toa recipient from said identified record in said database, and generatinga second data packet including a payload included in said first datapacket and addressed to said recipient with said address relating tosaid recipient extracted from said record in said database.
 8. Apparatusas claimed in claim 2, wherein said computer-readable code when executedcontrols said at least one processor to respond to detecting ceasing ofsaid connection with said source by causing disconnection of saidconnection with said target.
 9. Apparatus as claimed in claim 2, whereinsaid computer-readable code when executed controls said at least oneprocessor to respond to detecting ceasing of said connection with saidtarget by causing disconnection of said connection with said source. 10.Apparatus as claimed in claim 2, wherein said computer-readable codewhen executed controls said at least one processor to scan for proxyconnection initiation request messages.
 11. Apparatus as claimed inclaim 10, wherein said computer-readable code when executed controlssaid at least one processor to scan for proxy connection initiationrequest messages when a proxy mode setting is enabled and to refrainfrom scanning for proxy connection initiation request messages when aproxy mode setting is disabled.
 12. Apparatus as claimed in claim 2,wherein said computer-readable code when executed controls said at leastone processor: to respond to receiving said proxy connection initiationrequest message by determining whether said address of said sourceincluded in said proxy connection initiation request message is includedin a list of permitted addresses; to cause sending of said advertisingmessage addressed to said target if said address of said source includedin said proxy connection initiation request message is included in saidlist of permitted addresses; and to refrain from sending saidadvertising message addressed to said target if said address of saidsource included in said proxy connection initiation request message isnot included in said list of permitted addresses.
 13. Apparatus asclaimed in claim 2, wherein said computer-readable code when executedcontrols said at least one processor, subsequent to receiving saidconnection request message from said target, to respond to receiving afurther proxy connection initiation request message from said source bycausing sending of said proxy setup request message addressed to saidsource.
 14. Apparatus as claimed in claim 2, wherein at least one of thefollowing: a) said address of said target is included in a payload ofsaid proxy connection initiation request, or b) said address of saidsource is included in a payload of said proxy connection initiationrequest.
 15. Apparatus as claimed in claim 2, wherein saidcomputer-readable code when executed controls said at least oneprocessor to perform at least one of: include an address of said proxydevice and an address of said source in said proxy setup requestmessage; and include data for connection setup in a payload of saidproxy setup request message.
 16. An apparatus as claimed in claim 2,wherein said computer-readable code when executed controls said at leastone processor to cause said proxy device to, in response to receivingsaid connection request message from said target, await receipt ofanother proxy connection initiation receipt message from said sourcebefore sending said proxy setup request message addressed to saidsource.
 17. A Bluetooth Low Energy (BLE)-enabled apparatus, saidapparatus having at least one processor and at least one non-transitorymemory having computer-readable code stored therein which when executedcontrols said at least one processor to cause said apparatus: to sendone or more BLE advertising messages addressed to a BLE-enabled targetusing an address of said target; to respond to determining that noresponse to said advertising message has been received from said targetby sending a proxy connection initiation request message, said proxyconnection initiation request message being a request to provide a proxyand including said address of said target and an address of saidapparatus; and to respond to receiving a proxy setup request messagefrom a BLE-enabled proxy device, said proxy setup request message beingaddressed to said apparatus, by connecting to said proxy device. 18.Apparatus as claimed in claim 17, wherein said computer-readable codewhen executed controls said at least one processor to send advertisingmessages addressed to a target using an address of said targetrepeatedly until it is detected that a first timeout has expired or thata response has been received from said target.
 19. Apparatus as claimedin claim 17, wherein said computer-readable code when executed controlssaid at least one processor to send proxy connection initiation requestmessages repeatedly until it is detected that a second timeout hasexpired or that said proxy setup request message has been received fromsaid proxy.
 20. Apparatus as claimed in claim 17, wherein saidcomputer-readable code when executed controls said at least oneprocessor to read an address of said proxy from said received proxysetup request message, and to connect to said proxy device conditionalon said address of said proxy being included in a list of permittedproxy addresses.
 21. Apparatus as claimed in claim 17, wherein saidcomputer-readable code when executed controls said at least oneprocessor to include at least one of said address of said target andsaid address of said apparatus in a payload of said proxy connectioninitiation request.
 22. Apparatus as claimed in claim 17, wherein atleast one of the following: a) said proxy setup request message includesan address of said proxy and an address of said apparatus, or b) saidproxy setup request message includes data for connection setup in apayload thereof.
 23. A method, comprising: sending one or more BluetoothLow Energy (BLE) advertising messages addressed to a BLE-enabled targetusing an address of said target; responding to determining that noresponse to said advertising message has been received from said targetby sending a proxy connection initiation request message, said proxyconnection initiation request message being a request to provide a proxyand including said address of said target and an address of a source ofsaid one or more advertising messages; and responding to receiving aproxy setup request message from a BLE-enabled proxy device, said proxysetup request message being addressed to a source of said one or moreadvertising messages, by connecting to said proxy device.
 24. A methodas claimed in claim 23, further comprising sending advertising messagesaddressed to a target using an address of said target repeatedly untilit is detected that a first timeout has expired or that a response hasbeen received from said target.
 25. A method as claimed in claim 23,further comprising sending proxy connection initiation request messagesrepeatedly until it is detected that a second timeout has expired orthat said proxy setup request message has been received from said proxy.26. A method as claimed in claim 23, further comprising reading anaddress of said proxy from said received proxy setup request message,and connecting to said proxy device conditional on said address of saidproxy being included in a list of permitted proxy addresses.
 27. Amethod as claimed in claim 23, further comprising including at least oneof said address of said target and said address of said source of saidone or more advertising messages in a payload of said proxy connectioninitiation request.
 28. A method as claimed in claim 23, wherein atleast one of the following: a) said proxy setup request message includesan address of said proxy and an address of said source of said one ormore advertising messages, or b) said proxy setup request messageincludes data for connection setup in a payload thereof.